In many environments, there is a need for callers to be connected with human agents that have a particular expertise in a given area. In many cases, different agents will have expertise in different areas, and connecting each caller to an agent that has expertise in a desired area faces various challenges. For instance, there are generally numerous agents that have expertise in given area, and these agents rotate in and out of availability based on their work schedule, breaks, and servicing other callers. Being able to identify an agent that has expertise in a given area, determine whether the agent is available, and connect the caller to the agent is typically provided manually or through an automated call center. Manual processes that rely on operators keeping track of an agent's expertise and availability, which may be in a constant state of flux, is at best inefficient and generally impracticable. Using a hospital environment as an example, hospital operators have a very difficult time keeping track of which nurses and doctors are at work, let alone keeping track of the particular specialties of the nurses and doctors and whether they are available at any given time to respond to a caller's request.
Call centers are relatively structured systems configured to route calls from various callers to terminals of agents who are capable of servicing the needs of the callers. Each agent must login to an agent terminal to make herself available for handling calls. Once logged in via their terminals, the agents are associated with a certain area of expertise, and it is assumed that the agent logged into the terminal has expertise in the certain area. As such, agents are either in or out of an available pool of agents for handling calls based on whether they are logged into their agent terminal. Callers generally initiate calls to the call center in general, and upon establishing a communication session with the call center, interact with an automated agent or a triage agent to have the communication session transferred to a particular agent terminal.
In addition to being cost prohibitive in many environments, call centers are often restrictive in the sense that the agents must be logged into a particular terminal in the system in order to be considered available for handling calls. Thus, the ability for an agent to dynamically move from one type of terminal to another and still be available to handle calls is limited. Further, it is difficult to make an agent, who is capable of providing different types of services, available to handle different services at the same time. For example, an entity may have a call center configured to direct a technical support request to a first group of terminals and sales support requests to a second group of terminals. A given agent may be able to handle sales support requests as well as technical support requests, but is logged into an agent terminal that is in the first group of terminals that are allocated to technical support requests. As such, the agent may not be engaged in a technical support request while all of the other sales support agents are overloaded with requests.
As such, there is a need for a better technique to connect those who need services to agents who are capable of providing those services through various types of communication sessions, including calls or text communications. There is also a need to provide more flexibility in keeping track of the availability of agents, allow agents that have different capabilities to be able to handle requests corresponding to those capabilities, and provide agents more flexibility in selecting a terminal to use when responding to requests.